package com.suoluo.zenadmin.controllers.admin;

import com.suoluo.zenadmin.common.CommonResp;

import net.paoding.rose.web.ControllerInterceptorAdapter;
import net.paoding.rose.web.Invocation;
import net.paoding.rose.web.RequestPath;
import net.paoding.rose.web.annotation.Intercepted;


@Intercepted(deny={"verifyCode"})
public class LoginInterceptor extends ControllerInterceptorAdapter{

	public LoginInterceptor() {
        // 这个优先级要小于PassportInterceptor，必须的
//        setPriority(900);
		this.setName("login");
    }

    @Override
    protected Object before(Invocation inv) throws Exception {
        // 如果当前没有登录就返�?r:/lib/login"表示重定向到http://host:port/lib/login页面
        if (!AdminLoginManager.isLogined(inv)) {
             // 没有返回true或null，表示要中断整个处理流程，即不再继续调用其他拦截器以及最终的控制程
             return "m:admin/login";
        }
       
        //对没有删除权限的用户在执行删除数据时给予提示信息
        RequestPath path = inv.getRequestPath();
        //获取请求路径
        String action = path.getActionPath();
        //判断请求路径中是否有delete
        int dele = action.indexOf("delete"); 
        int add = action.indexOf("/save");
        //如果是删除请求
        if(dele != -1 ) {
        	return check(inv);
        }
        //如果是添加
        if(add != -1) {
        	return check(inv);
        }
        // 返回true或null，表示继续整个流程
        return true;
    }

    private Object check(Invocation inv) {
    	 //判断用户权限,为true有添加和删除权限，反之没有
        if (AdminLoginManager.getIsDelete(inv)) {
        	return true;
        }
        else {
        	CommonResp resp = new CommonResp();
    		resp.setResultCode(CommonResp.FAIL_CODE);
    		resp.setResultMsg("您没有添加或删除权限，不可以执行添加或删除操作！");
    		return resp;
        }
    }
}
